home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / inet / internet-drafts / draft-ietf-wnils-whois-01.txt < prev    next >
Text File  |  1993-04-05  |  20KB  |  467 lines

  1.  
  2. WNILS Working Group                    Chris Weider
  3. INTERNET-DRAFT                        Merit Network, Inc.
  4.                             Jim Fullton
  5.                             CNIDR
  6.                             Simon Spero
  7. 3/26/93                         UNC Chapel Hill
  8.  
  9.  
  10.     Architecture of the Whois++ Index Service
  11.  
  12. Status of this memo:
  13.  
  14. The authors describe an architecture for indexing in distributed databases,
  15. and apply this to the WHOIS++ protocol.
  16.  
  17.  
  18.         This document is an Internet Draft.  Internet Drafts are working 
  19.         documents of the Internet Engineering Task Force (IETF), its Areas, 
  20.         and its Working Groups. Note that other groups may also distribute
  21.         working documents as Internet Drafts. 
  22.  
  23.         Internet Drafts are draft documents valid for a maximum of six 
  24.         months. Internet Drafts may be updated, replaced, or obsoleted
  25.         by other documents at any time.  It is not appropriate to use
  26.         Internet Drafts as reference material or to cite them other than
  27.         as a "working draft" or "work in progress."
  28.  
  29.         Please check the I-D abstract listing contained in each Internet 
  30.         Draft directory to learn the current status of this or any 
  31.         other Internet Draft.
  32.  
  33.     This Internet Draft expires October 1, 1993.
  34.  
  35. 1. Purpose:
  36.  
  37. The WHOIS++ directory service [Deutsch, et al, 1992] is intended to provide
  38. a simple, extensible directory service predicated on a template-based
  39. information model and a flexible query language. This document describes
  40. an architecture designed to link together many of these WHOIS++ servers
  41. into a distributed, searchable wide area directory service.
  42.  
  43. 2. Scope:
  44.  
  45. This document details a distributed, easily maintained architecture for
  46. providing a unified index to a large number of distributed WHOIS++
  47. servers. This architecture can be used with systems other than WHOIS++ to
  48. provide a distributed directory service which is also searchable.
  49.  
  50. 3. Motivation and Introduction:
  51.  
  52. It seems clear that with the vast amount of directory information potentially
  53. available on the Internet, it is simply unfeasible to build a centralized
  54. directory to serve all this information. Therefore, we should look at building
  55. a distributed directory service. If we are to distribute the directory service,
  56. the easiest (although not necessarily the best) way of building the directory
  57. service is to build a hierarchy of directory information collection agents.
  58. In this architecture, a directory query is delivered to a certain agent
  59. in the tree, and then handed up or down, as appropriate, so that the query
  60. is delivered to the agent which holds the information which fills the query.
  61. This approach has been tried before, most notably in some implementations of
  62. the X.500 standard. However, there are number of major flaws with the approach 
  63. as it has been taken. This new Index Service is designed to fix these flaws.
  64.  
  65.  
  66. WNILS Working Group          Whois++ Index Service        Weider, et al.
  67.  
  68.  
  69. 3.1 The search problem
  70.  
  71. One of the primary assumptions made by recent implementations of distributed
  72. directory services is that every entry resides in some location in a hierarch-
  73. ical name space. While this arrangement is ideal for reading the entry once
  74. one knows its location, it is not as good when one is searching for the location
  75. in the namespace of those entries which meet some set of criteria.  If the only
  76. criteria we know about a desired entry are items which do not appear in the
  77. namespace, we are forced to do a global query. Whenever we issue a global 
  78. query (at the root of the namespace), or a query at the top of a given subtree 
  79. in the namespace, that query is replicated to _all_ subtrees of the starting
  80. point. The replication of the query to all subtrees is not necessarily a 
  81. problem; queries are cheap. However, every server to which the query has been 
  82. replicated must process that query, even if it has no entries which match 
  83. the specified criteria. This part of the global query processing is quite 
  84. expensive. A poorly designed namespace or a thin namespace can cause the
  85. vast majority of queries to be replicated globally, but a very broad 
  86. namespace can cause its own navigation problems. Because of these problems,
  87. search has been turned off at high levels of the X.500 namespace.
  88.  
  89. 3.2 The location problem
  90.  
  91. With global search turned off, one must know in advance how the name space is
  92. laid out so that one can guide a query to a proper location. Also, the layout
  93. of the namespace then becomes critical to a user's ability to find the 
  94. desired information. Thus there are endless battles about how to lay out the
  95. name space to best serve a given set of users, and enormous headaches whenever
  96. it becomes apparent that the current namespace is unsuited to the current
  97. usages and must be changed (as recently happened in X.500). Also, assuming
  98. one does impose multiple hierarchies on the entries through use of the 
  99. namespace, the mechanisms to maintain these multiple hierarchies in X.500 do
  100. not exist yet, and it is possible to move entries out from under their 
  101. pointers.  Also, there is as yet no agreement on how the X.500 namespace
  102. should look even for the White Pages types of information that is currently
  103. installed in the X.500 pilot project.
  104.  
  105. 3.3 The Yellow Pages problem
  106.  
  107. Current implementations of this hierarchical architecture have also been
  108. unsuited to solving the Yellow Pages problem; that is, the problem of
  109. easily and flexibly building special-purpose directories (say of molecular
  110. biologists) and of automatically maintaining these directories once they have
  111. been built. In particular, the attributes appropriate to the new directory
  112. must be built into the namespace because that is the only way to segregate
  113. related entries into a place where they can be found without a global 
  114. search. Also, there is a classification problem; how does one adequately
  115. specify the proper categories so that people other than the creator of the
  116. directory can find the correct subtree? Additionally, there is the problem
  117. of actually finding the data to put into the subtree; if one must traverse
  118. the hierarchy to find the data, we have to look globally for the proper 
  119. entries.
  120.  
  121. 3.4 Solutions
  122.  
  123. We'll hold off for a moment on describing the actual architecture used in
  124. our solution to these problems and concentrate on a high level description of
  125. what solutions are provided by our conceptual approach. To begin with,
  126. although every entry in WHOIS++ does indeed have a unique identifier 
  127. (resides in a specific location in the namespace) the navigational algorithms
  128. to reach a specific entry does not necessarily depend on the identifier the
  129. entry has been assigned. The Index Service gets around the namespace and
  130.  
  131.  
  132. WNILS Working Group         Whois++ Index Service        Weider, et al.
  133.  
  134.  
  135. hierarchy problems by creating a directory mesh on top of the entries.
  136. Each layer of the mesh has a set of 'forward knowledge' which indicates the
  137. contents of the various servers at the next lower layer of the mesh. Thus 
  138. when a query is received by a server in a given layer of the mesh, it can
  139. prune the search tree and hand the query off to only those lower level servers
  140. which have indicated that they might be able to answer it. Thus search becomes
  141. feasible at all levels of the mesh. In the current version of this architecture,
  142. we have chosen a certain set of information to hand up the mesh as forward 
  143. knowledge. This may or may not be exactly the set of information required to
  144. construct a truly searchable directory, but the protocol itself doesn't 
  145. restrict the types of information which can be handed around.
  146.  
  147. Another benefit provided by the mesh of index servers is that since the
  148. entry identification scheme has been decoupled from the navigation service,
  149. multiple hierarchies can be built and easily maintained on top of the 
  150. existing data. Also, the user does not need to know in advance where in the 
  151. mesh the entry is contained.
  152.  
  153. Also, the Yellow Pages problem now becomes tractable, as the index servers
  154. can pick and choose between information proffered by a given server; 
  155. because we have an architecture that allows for automatic polling of data, 
  156. special purpose directories become easy to construct and to maintain.
  157.  
  158.  
  159. 4. Components of the Index Service:
  160.  
  161. 4.1 WHOIS++ servers
  162.  
  163. The whois++ service is described in [Deutsch, et al, 1992]. As that service 
  164. specifies only the query language, the information model, and the server 
  165. responses, whois++ services can be provided by a wide variety of databases 
  166. and directory services. However, to participate in the Index Service, that 
  167. underlying database must also be able to generate a 'centroid', or some other
  168. type of forward knowledge, for the data it serves.
  169.  
  170. 4.2 Centroids as forward knowledge
  171.  
  172. The centroid of a server is comprised of a list of the templates and 
  173. attributes used by that server, and a word list for each attribute.
  174. The word list for a given attribute contains one occurrence of every 
  175. word which appears at least once in that attribute in some record in that 
  176. server's data, and nothing else.
  177.  
  178. For example, if a whois++ server contains exactly three records, as follows:
  179.  
  180. Record 1            Record 2
  181. Template: User            Template: User
  182. First Name: John         First Name: Joe
  183. Last Name: Smith        Last Name: Smith
  184. Favourite Drink: Labatt Beer    Favourite Drink: Molson Beer
  185.  
  186. Record 3
  187. Template: Domain
  188. Domain Name: foo.edu
  189. Contact Name: Mike Foobar
  190.  
  191.  
  192. WNILS Working Group         Whois++ Index Service        Weider, et al.
  193.  
  194.  
  195. the centroid for this server would be
  196.  
  197. Template:       User
  198. First Name:       Joe
  199.           John
  200. Last Name:       Smith
  201. Favourite Drink:  Beer
  202.           Labatt
  203.           Molson
  204.  
  205. Template:      Domain
  206. Domain Name:      foo.edu
  207. Contact Name:     Mike
  208.           Foobar
  209.           
  210. It is this information which is handed up the tree to provide forward knowledge.
  211. As we mention above, this may not turn out to be the ideal solution for
  212. forward knowledge, and we suspect that there may be a number of different
  213. sets of forward knowledge used in the Index Service. However, the directory
  214. architecture is in a very real sense independent of what types of forward
  215. knowledge are handed around, and it is entirely possible to build a 
  216. unified directory which uses many types of forward knowledge.
  217.          
  218.  
  219. 4.3 Index servers and Index server Architecture
  220.  
  221. A whois++ index server collects and collates the centroids (or other forward 
  222. knowledge) of either a number of whois++ servers or of a number of other index
  223. servers. An index server must be able to generate a centroid for the
  224. information it contains.
  225.  
  226. 4.3.1 Queries to index servers
  227.  
  228. An index server will take a query in standard whois++ format, search its
  229. collections of centroids, determine which servers hold records which may fill
  230. that query, and then either a) forward the query to the appropriate servers
  231. on behalf of the user, or b) notify the user's client of the next servers
  232. to contact to submit the query.
  233.  
  234. 4.3.2 Index server distribution model and centroid propogation
  235.  
  236. The diagram on the next page illustrates how a mesh of index servers is
  237. created for a set of whois++ servers.
  238.  
  239.  
  240. WNILS Working Group         Whois++ Index Service        Weider, et al.
  241.  
  242.  
  243.   whois++        index            index
  244.   servers        servers            servers
  245.             for            for
  246.              whois++            lower-level
  247.                       servers            index servers
  248.   _______
  249.  |       |             
  250.  |   A   |__
  251.  |_______|  \            _______
  252.          \----------|       |
  253.   _______               |   D   |__             ______
  254.  |       |   /----------|_______|  \           |      |
  255.  |   B   |__/                       \----------|      |
  256.  |_______|                                     |  F   |
  257.                     /----------|______|
  258.                    /
  259.   _______                _______  /
  260.  |       |              |       |-
  261.  |   C   |--------------|   E   |
  262.  |_______|              |_______|-
  263.                   \
  264.                    \
  265.   _______                           \            ______
  266.  |       |                 \----------|      |
  267.  |   G   |--------------------------------------|  H   |
  268.  |_______|                                      |______|
  269.  
  270.  
  271.         Figure 1: Sample layout of the Index Service mesh
  272. _______________________________________________________________________________
  273.  
  274.  
  275. In the portion of the index tree shown above, whois++ servers A and B hand their
  276. centroids up to index server D, whois++ server C hands its centroid up to
  277. index server E, and index servers D and E hand their centroids up to index 
  278. server F. Servers E and G also hand their centroids up to H.
  279.  
  280. The number of levels of index servers, and the number of index servers at each
  281. level, will depend on the number of whois++ servers deployed, and the response
  282. time of individual layers of the server tree. These numbers will have to 
  283. be determined in the field.
  284.  
  285. 4.3.4 Centroid propogation and changes to centroids
  286.  
  287. Centroid propogation is initiated by an authenticated POLL command (sec. 5.2).
  288. The format of the POLL command allows the poller to request the centroid of
  289. any or all templates and attributes held by the polled server. After the
  290. polled server has authenticated the poller, it determines which of the 
  291. requested centroids the poller is allowed to request, and then issues a
  292. CENTROID-CHANGES report (sec. 5.3) to transmit the data. When the poller
  293. receives the CENTROID-CHANGES report, it can authenticate the pollee to
  294. determine whether to add the centroid changes to its data. Additionally, if
  295. a given pollee knows what pollers hold centroids from the pollee, it can
  296. signal to those pollers the fact that its centroid has changed by issuing
  297. a DATA-CHANGED command. The poller can then determine if and when to 
  298. issue a new POLL request to get the updated information. The DATA-CHANGED
  299. command is included in this protocol to allow 'interactive' updating of
  300. critical information.
  301.  
  302.  
  303. WNILS Working Group         Whois++ Index Service        Weider, et al.
  304.  
  305.  
  306. 4.3.5 Query handling and passing algorithms
  307.  
  308. When an index server receives a query, it searches its collection of centroids,
  309. and determines which servers hold records which may fill that query. As
  310. whois++ becomes widely deployed, it is expected that some index servers
  311. may specialize in indexing certain whois++ templates or perhaps even
  312. certain fields within those templates. If an index server obtains a match
  313. with the query _for those template fields and attributes the server indexes_,
  314. it is to be considered a match for the purpose of forwarding the query.
  315. There are two methods of forwarding a query, called 'chaining' and 'referral'.
  316.  
  317. 4.3.5.1 Query referral
  318.  
  319. Query referral is the process of informing a client which servers to contact
  320. next to resolve a query.  The syntax for notifying a client is outlined in
  321. section 5.5.
  322.  
  323. 4.3.5.2 Query chaining
  324.  
  325. Query chaining is done when the queried index server takes responsibility for
  326. resubmitting the query to the appropriate lower servers. The server 
  327. will then forward the query using the syntax in section 5.4, but then takes
  328. no further responsibility for the query. A whois++ query can specify the
  329. 'trace' option, which causes each server which receives the query to 
  330. send its IANA handle and an identification string to the client.
  331.  
  332. 5. Syntax for operations of the Index Service:
  333.  
  334. 5.1 Data changed syntax
  335.  
  336. The data changed template look like this:
  337.  
  338. DATA-CHANGED:
  339.    Version-number: // version number of index service software, used to insure
  340.            // compatibility
  341.    Time-of-latest-centroid-change: // time stamp of latest centroid change, GMT
  342.    Time-of-message-generation: // time when this message was generated, GMT
  343.    Server-handle: // IANA unique identifier for this server
  344.    Best-time-to-poll: // For heavily used servers, this will identify when
  345.               // the server is likely to be lightly loaded
  346.               // so that response to the poll will be speedy, GMT
  347.    Authentication-type: // Type of authentication used by server, or NONE
  348.    Authentication-data: // data for authentication 
  349. END DATA-CHANGED // This line must be used to terminate the data changed 
  350.          // message
  351.  
  352. 5.2 Polling syntax
  353.  
  354. POLL:
  355.    Version-number: // version number of poller's index software, used to
  356.            // insure compatibility
  357.    Start-time: // give me all the centroid changes starting at this time, GMT
  358.    End-time: // ending at this time, GMT
  359.    Template: // a standard whois++ template name, or the keyword ALL, for a
  360.          // full update.
  361.    Field:    // used to limit centroid update information to specific fields,
  362.          // is either a specific field name, a list of field names, 
  363.              // or the keyword ALL
  364.    Server-handle: // IANA unique identifier for the polling server. 
  365.           // this handle may optionally be cached by the polled
  366.           // server to announce future changes
  367.  
  368.  
  369. WNILS Working Group         Whois++ Index Service        Weider, et al.
  370.  
  371.  
  372.    Authentication-type: // Type of authentication used by poller, or NONE
  373.    Authentication-data: // Data for authentication
  374. END POLL     // This line must by used to terminate the poll message
  375.  
  376. 5.3 Centroid change report
  377.  
  378. CENTROID-CHANGES:
  379.    Version-number: // version number of pollee's index software, used to
  380.            // insure compatibility
  381.    Start-time: // change list starting time, GMT
  382.    End-time: // change list ending time, GMT
  383.    Server-handle: // IANA unique identifier of the responding server
  384.    Authentication-type: // Type of authentication used by pollee, or NONE
  385.    Authentication-data: // Data for authentication
  386.    Compression-type: // Type of compression used on the data, or NONE
  387.    Size-of-compressed-data: // size of compressed data if compression is used
  388.    Operation: // One of 3 keywords: ADD, DELETE, FULL
  389.           // ADD - add these entries to the centroid for this server
  390.               // DELETE - delete these entries from the centroid of this
  391.               // server
  392.           // FULL - the full centroid as of end-time follows
  393. Multiple occurrences of the following block of fields:
  394.     Template: // a standard whois++ template name
  395.     Field: // a field name within that template
  396.     Data: // the word list itself, one per line, cr/lf terminated
  397. end of multiply repeated block
  398.     END CENTROID-CHANGES // This line must be used to terminate the centroid
  399.              // change report
  400.  
  401. 5.4 Forwarded query
  402.  
  403. FORWARDED-QUERY:
  404.    Version-number: // version number of forwarder's index software, used to 
  405.            // insure compatibility
  406.    Forwarded-From: // IANA unique identifier of the server forwarding query 
  407.    Forwarded-time: // time this query forwarded, GMT (used for debugging)
  408.    Trace-option: // YES if query has 'trace' option listed, NO if not.
  409.          // used at message reception time to generate trace information
  410.    Query-origination-address: // address of origin of query
  411.    Body-of-Query: // The original query goes here
  412.    Authentication-type: // Type of authentication used by queryer
  413.    Authentication-data: // Data for authentication
  414.    END FORWARDED-QUERY // This line must be used to terminate the body of the
  415.                 // query
  416.  
  417. 5.5 Query referral
  418.  
  419. SERVERS-TO-ASK:
  420.    Version-number: // version number of index software, used to insure
  421.            // compatibility
  422.    Query-id: // some query identifier so the client knows which query to
  423.              // issue to the following servers
  424.    Body-of-Query: // the original query goes here
  425.    Next-Servers: // A list of servers to ask next, either IP addresses or
  426.          // hostnames, one per line, cr/lf terminated
  427.    END SERVERS-TO-ASK
  428.  
  429.  
  430. WNILS Working Group         Whois++ Index Service        Weider, et al.
  431.  
  432.  
  433. 6 References
  434.  
  435.   Deutsch, et al. Architecture of the WHOIS++ service. August 1992. 
  436.    Available by anonymous FTP as 
  437.     ucdavis.edu://pub/archive/wnils/Architecture.Overview
  438.  
  439. 7 Author's Addresses
  440.  
  441. Chris Weider
  442. clw@merit.edu
  443. Industrial Technology Institute, Pod G
  444. 2901 Hubbard Rd, 
  445. Ann Arbor, MI 48105
  446. O: (313) 747-2730
  447. F: (313) 747-3185
  448.  
  449. Jim Fullton
  450. fullton@concert.net
  451. MCNC Center for Communications
  452. Post Office Box 12889
  453. 3021 Cornwallis Road
  454. Research Triangle Park
  455. North Carolina 27709-2889
  456. O: 919-248-1499
  457. F: 919-248-1405
  458.  
  459. Simon Spero
  460. ses@sunsite.unc.edu
  461. 310 Wilson Library CB #3460
  462. University of North Carolina
  463. Chapel Hill, NC 27599-3460
  464. O: (919) 962-9107
  465. F: (919) 962-5604
  466.    
  467.